package com.cdn.nodes.service;

import com.cdn.nodes.domain.EdgeClusters;
import com.cdn.nodes.domain.dto.EdgeClustersAddDTO;
import com.cdn.nodes.domain.vo.EdgeClustersDnsVO;

import java.rmi.ServerException;
import java.util.List;

/**
 * 边缘集群，存储边缘集群的相关信息，包括配置和状态Service接口
 * 
 * @author Cinzia
 * @date 2024-12-14
 */
public interface IEdgeClustersService 
{
    /**
     * 查询边缘集群，存储边缘集群的相关信息，包括配置和状态
     * 
     * @param clusterId 边缘集群，存储边缘集群的相关信息，包括配置和状态主键
     * @return 边缘集群，存储边缘集群的相关信息，包括配置和状态
     */
    public EdgeClusters selectEdgeClustersByClusterId(Long clusterId);

    /**
     * 查询边缘集群，存储边缘集群的相关信息，包括配置和状态列表
     * 
     * @param edgeClusters 边缘集群，存储边缘集群的相关信息，包括配置和状态
     * @return 边缘集群，存储边缘集群的相关信息，包括配置和状态集合
     */
    public List<EdgeClusters> selectEdgeClustersList(EdgeClusters edgeClusters);

    /**
     * 新增边缘集群，存储边缘集群的相关信息，包括配置和状态
     * 
     * @param edgeClustersAddDTO 边缘集群，存储边缘集群的相关信息，包括配置和状态
     * @return 结果
     */
    public int insertEdgeClusters(EdgeClustersAddDTO edgeClustersAddDTO);

    /**
     * 修改边缘集群，存储边缘集群的相关信息，包括配置和状态
     * 
     * @param edgeClusters 边缘集群，存储边缘集群的相关信息，包括配置和状态
     * @return 结果
     */
    public int updateEdgeClusters(EdgeClusters edgeClusters);

    /**
     * 批量删除边缘集群，存储边缘集群的相关信息，包括配置和状态
     * 
     * @param clusterIds 需要删除的边缘集群，存储边缘集群的相关信息，包括配置和状态主键集合
     * @return 结果
     */
    public int deleteEdgeClustersByClusterIds(Long[] clusterIds);

    /**
     * 删除边缘集群，存储边缘集群的相关信息，包括配置和状态信息
     * 
     * @param cluster 边缘集群，存储边缘集群的相关信息，包括配置和状态主键
     * @return 结果
     */
    public int deleteEdgeClustersByClusterId(Long cluster);

    public List<Long> getByClusterId(Long cluster) throws ServerException;

    public String getDnsByClusterId(Long cluster) throws ServerException;

    public String getClusterSsh(Long cluster);

    public List<EdgeClustersDnsVO> getClustersDnsInfo(String keyword);

    public EdgeClustersDnsVO getClustersDnsInfoByClusterId(Long clusterId);

    public String getClusterByNodeId(Long nodeId);

    public String getInstallPath(Long nodeId);


//    public String getDnsLine(Long clusterId);
}
